#pragma once

#include "ofMain.h"
#include "ofxAssimpModelLoader.h"

const static string objPath = "assets/";


class Objet{
private:
	ofMesh mesh, normalMesh;
	ofxAssimpModelLoader xaLoader;
	ofImage image;
	ofVec3f position, rotation;
	ofVec3f size;
	ofColor color;
	list<Objet> enfants;

	bool selected;
	bool isMesh;

public:
	Objet();

	// Set
	void addPos(float, float, float);
	void addPos(ofVec3f&);
	void addPosZ(float, float, float);
	void addPosZ(ofVec3f&);
	void setPos(float, float, float);
	void setPos(ofVec3f&);

	void addRot(ofVec3f&);
	void setRot(ofVec3f&);

	void setColor(ofColor&);

	void setSize(ofVec3f&);

	void setImage(ofImage&);
	void setMesh(ofMesh&);
	void setSelected(bool);

	// Get
	ofVec3f& getPos();
	ofVec3f& getRot();
	ofColor& getColor();
	ofVec3f& getSize();
	ofMesh getMesh();
	ofMesh getMesh(int);
	ofVec3f getCenter();

	// Fonctions
	void load(string, string);
	void load(string);
	void loadMesh(string);
	void loadImage(string);

	void reset();

	void addObjet(Objet);

	Objet * getPtr();
	Objet * click(ofEasyCam, ofVec3f);

	void update();
	void draw();

	bool isMeshSet();
	bool isSelected();
};